package com.cn.por.biz.comt.bo.impl;
import cn.hsa.base.web.vo.PageFactory;
import cn.hsa.base.web.vo.PageResultData;
import com.cn.por.biz.comt.dao.ComtMgtContADAO;
import com.cn.por.biz.comt.bo.ComtMgtContABO;
import com.cn.por.biz.comt.entity.ComtMgtContADO;
import com.cn.por.biz.comt.dto.ComtMgtContADTO;
import com.cn.por.biz.comt.dto.ComtMgtContADTOConverter;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>组件内容管理表实现层</p>
 * @author xx
 * @since 2024-12-17
 */
@Service
public class ComtMgtContABOImpl extends ServiceImpl<ComtMgtContADAO, ComtMgtContADO>  implements ComtMgtContABO {

    @Autowired
    private ComtMgtContADTOConverter comtMgtContADTOConverter; 
 
    @Autowired
    private ComtMgtContADAO comtMgtContADAO;

    @Override
    public ComtMgtContADTO add(ComtMgtContADTO comtMgtContADTO){
      ComtMgtContADO comtMgtContADO = toDO(comtMgtContADTO);
      comtMgtContADO.setValiFlag("1");
      comtMgtContADAO.insert(comtMgtContADO);
      return toDTO(comtMgtContADO);
    }

    @Override
    public Boolean delete(String id){
      ComtMgtContADO comtMgtContADO = new ComtMgtContADO();
      comtMgtContADO.setComtMgtContId(id);
      comtMgtContADO.setValiFlag("0");
      return comtMgtContADAO.updateById(comtMgtContADO)>0;
    }

    @Override
    public ComtMgtContADTO update(ComtMgtContADTO comtMgtContADTO){
      ComtMgtContADO comtMgtContADO = toDO(comtMgtContADTO);
      comtMgtContADAO.updateById(comtMgtContADO);
      return toDTO(comtMgtContADO);
    }

    @Override
    public ComtMgtContADTO get(String id){
      return toDTO(comtMgtContADAO.selectById(id));
    }

    @Override
    public PageResultData<ComtMgtContADTO> getPage(int pageNo, int pageSize, ComtMgtContADTO comtMgtContADTO){
      Page<ComtMgtContADO> page = PageFactory.createPage(pageNo, pageSize);
      ComtMgtContADO comtMgtContADO = toDO(comtMgtContADTO);
      QueryWrapper<ComtMgtContADO> queryWrapper = new QueryWrapper<ComtMgtContADO>();
      if (!StringUtils.isEmpty(comtMgtContADO.getComtMgtId()) ){
        queryWrapper.like("comt_mgt_id", comtMgtContADO.getComtMgtId());
      }
      if (!StringUtils.isEmpty(comtMgtContADO.getAttrCode()) ){
        queryWrapper.like("attr_code", comtMgtContADO.getAttrCode());
      }
      if (!StringUtils.isEmpty(comtMgtContADO.getAttrType()) ){
        queryWrapper.like("attr_type", comtMgtContADO.getAttrType());
      }
      queryWrapper.eq("VALI_FLAG","1");
      queryWrapper.orderByAsc("comt_mgt_cont_id");
      page = comtMgtContADAO.selectPage(page, queryWrapper);
      // do list --> dto list
      List<ComtMgtContADO> records = page.getRecords();
      List<ComtMgtContADTO> list = new ArrayList<ComtMgtContADTO>();
      for (ComtMgtContADO row : records) {
        list.add(toDTO(row));
      }
      PageResultData<ComtMgtContADTO> result = PageFactory.createPage(list, page);
      return result;
    }

    private ComtMgtContADO toDO(ComtMgtContADTO comtMgtContADTO){
      ComtMgtContADO comtMgtContADO = comtMgtContADTOConverter.convertToComtMgtContADO(comtMgtContADTO);
      return comtMgtContADO;
    }

    private ComtMgtContADTO toDTO(ComtMgtContADO comtMgtContADO){
      ComtMgtContADTO comtMgtContADTO = comtMgtContADTOConverter.convertToComtMgtContADTO(comtMgtContADO);
      return comtMgtContADTO;
    }
}